package main

import (
	"fmt"
	"wms/api/router"
	"wms/config"
	"wms/pkg/database"
	"wms/pkg/initialize"
	"wms/pkg/logger"

	"github.com/gin-gonic/gin"
)

func main() {
	// 初始化日志
	cfg := config.GetConfig().Log
	_, err := logger.InitLogger(&cfg)
	if err != nil {
		fmt.Printf("初始化日志失败: %v\n", err)
		return
	}

	// 记录系统启动业务操作
	logger.LogOperation("系统启动", 0, "系统初始化开始")

	// 初始化数据库
	dbConfig := config.GetConfig().Database
	if err := database.InitDB(&dbConfig); err != nil {
		fmt.Printf("初始化数据库失败: %v\n", err)
		return
	}

	// 初始化数据
	if err := initialize.InitData(); err != nil {
		fmt.Printf("初始化数据失败: %v\n", err)
		return
	}

	// 设置Gin模式
	if config.GetConfig().Server.Mode == "production" || config.GetConfig().Server.Mode == "release" {
		gin.SetMode(gin.ReleaseMode)
	} else {
		gin.SetMode(gin.DebugMode)
	}

	// 初始化路由
	r := router.InitRouter()

	// 启动服务器
	port := config.GetConfig().Server.Port
	addr := fmt.Sprintf(":%d", port)

	// 记录系统启动完成业务操作
	logger.LogOperation("系统启动", 0, "服务器启动成功")

	// 启动服务
	fmt.Printf("服务器启动于 %s\n", addr)
	err = r.Run(addr)
	if err != nil {
		fmt.Printf("服务器启动失败: %v\n", err)
	}
}
